import plugin from '../../lib/plugins/plugin.js'
import { execSync } from 'child_process'
import fs from 'fs'
import { resolve } from 'path'

export class JMComic extends plugin {
  constructor() {
    super({
      name: 'JM漫画下载器',
      dsc: '私用JM漫画下载工具',
      event: 'message',
      priority: 6,
      rule: [
        {
          reg: '^#jm\\d+$',
          fnc: 'downloadComic',
          log: false,
          check: e => this.checkPermission(e)
        },
        {
          reg: '^#?jm帮助$',
          fnc: 'showHelp',
          log: false
        }
      ]
    })
    
    // 加载配置
    this.configPath = resolve(process.cwd(), 'plugins/jmcomic/config.json')
    this.fullConfig = JSON.parse(fs.readFileSync(this.configPath))
    this.config = this.fullConfig.config
  }

  // 权限校验
  checkPermission(e) {
    if (this.config.private_mode && !e.isPrivate) return false
    if (this.config.allowed_users?.length > 0) {
      return this.config.allowed_users.includes(e.user_id)
    }
    return true
  }

  async showHelp(e) {
    await e.reply(this.config.help_message || '默认帮助信息')
  }

  async downloadComic(e) {
    const comicId = e.msg.replace('#jm', '').trim()
    
    // ID格式校验
    if (!/^\d+$/.test(comicId)) {
      await e.reply('❌ 漫画ID必须是纯数字')
      return true
    }

    try {
      await e.reply('⏳ 开始处理请求，可能需要较长时间...')
      
      // 执行Python脚本
      const cmd = `python3 plugins/jmcomic/jm_crawler.py ${comicId}`
      const output = execSync(cmd, { stdio: 'pipe' }).toString()
      
      // 解析输出结果
      const [status, path] = output.split(':')
      if (status !== 'SUCCESS') throw new Error(output)

      // 发送文件
      if (fs.existsSync(path)) {
        await e.reply([
          { type: 'text', text: '✅ 下载完成' },
          { type: 'file', path: path }
        ])
        
        // 清理文件
        if (this.config.clean_temp) {
          fs.unlinkSync(path)
        }
      } else {
        await e.reply('❌ 文件生成失败，请联系管理员')
      }
    } catch (err) {
      await e.reply(`❌ 发生错误：${err.stderr?.toString() || err.message}`)
      console.error('[JM插件错误]', err)
    }
    return true
  }
}